#include "qDebug.h"


//硬件定义
//#define QDEBUG_TX_PIN           RB7
//#define setTxHigh()            (QDEBUG_TX_PIN = 1)
//#define setTxLow()             (QDEBUG_TX_PIN = 0)

#define setTxHigh()            	GPIO_PA03_SET()
#define setTxLow()            	GPIO_PA03_RESET()

//函数声明
static void qDebugDelay(void);

static void qDebug_pin_init(void)
{
    stc_gpio_init_t stcGpioInit = {0};
    
    ///< 外设时钟使能
    SYSCTRL_PeriphClkEnable(SYSCTRL_PERICLK_PA);  //qDebug -- PA03
    
    ///< LED端口初始化
    stcGpioInit.u32Mode = GPIO_MODE_OUTPUT_PP;
    stcGpioInit.u32Pin  = GPIO_PIN_03;
    stcGpioInit.u32Pull = GPIO_PULL_NONE;
    GPIOA_Init(&stcGpioInit);

}

/*******************************************************************************
** 函数名称 ：  qDebugInit
** 函数功能 ：  初始化
** 入口参数 ：  
** 出口参数 ：
*******************************************************************************/
void    qDebug_init(void)
{
    qDebug_pin_init();
		
//    TRISB7 = 0;
    setTxHigh();
}

/*******************************************************************************
** 函数名称 ：  qDebug
** 函数功能 ：  发送字节
** 入口参数 ：  uint8 val               待发送数据
** 出口参数 ：
*******************************************************************************/
void    qDebug(uint8 val)
{
//    while(1) {
//        setTxLow();
//        qDebugDelay();
//        setTxHigh();
//        qDebugDelay();
//    }
    setTxLow();
    qDebugDelay();
    if(val & 0x01) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x02) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x04) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x08) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x10) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x20) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x40) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    if(val & 0x80) {setTxHigh();} else {setTxLow();}
    qDebugDelay();
    setTxHigh();
    qDebugDelay();
    qDebugDelay();
}

/*******************************************************************************
** 函数名称 ：  qDebugDelay
** 函数功能 ：  延时1bit时间--9600bps-104us
** 入口参数 ：  
** 出口参数 ：
*******************************************************************************/
static void qDebugDelay(void)
{
    uint16 i;
    
//    for(i = 0; i < 120; ++i) {
//        NOP();
//    }
    i = 66;
    while(i--);
	
}
